import { getToken, setToken } from "@/utils/auth";
import { getUserInfoApi, login } from "@/api/user";
// 存储状态
const state = {
  token: getToken(), //从本地存储中取token
  userInfo: {}, //存储用户信息对象
};
// 修改数据的方法
const mutations = {
  //这里需要提供一个修改state的方法
  handleLogin(state, newToken) {
    state.token = newToken;
    //除了存一份到vuex，还需存一份到本地
    setToken(newToken);
  },
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo;
  },
};
// 人资项目的接口请求放actions里
const actions = {
  //第一个参数是上下文，第二个才是数据
  async loginAction(ctx, data) {
    //调用登录的接口，在api/user.js里
    const res = await login(data);
    //打印登录接口获取的数据
    console.log(res);
    //从/api回到这里，打印出res了，然后调用mutations
    // ctx.commit("handleLogin", res.data.data); //res.data.data就是token
    //application storage cookie里可见hrsaas-key里的就是，可见已存到本地
    //还有一份存在vuex里的user里，没找到？？？？？？？
    //然后需要拿到点登录之后网络login里的success去utils/request.js的response点use响应拦截器里处理
    //因为utils/request.js里的响应拦截器，已经点data点data了，所以这里的res直接就是token值了
    ctx.commit("handleLogin", res);
  },
  //个人信息的获取
  async getUserInfoAction(ctx) {
    //调接口
    const res = await getUserInfoApi();
    console.log(res);
    ctx.commit("setUserInfo", res.data);
  },
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
